package br.unirio.octopus.dominio;

import java.io.Serializable;
import java.util.Date;

public class PalpiteVO implements Serializable, Comparable<PalpiteVO>{


	private static final long serialVersionUID = 1L;
	
	private Integer idDoPalpite;
	private Integer idDoJogo;
	private Date dataDoJogo;
	private String estadio;
	private String selecao1;
	private Integer palpite1;
	private Integer golsSelecao1;
	private String codigoLongoPais1;
	private String selecao2;
	private Integer palpite2;
	private Integer golsSelecao2;
	private String codigoLongoPais2;
	private Integer pontos;
	private Integer idDoUsuario;
	private boolean jogoEditavel;

	public PalpiteVO()
	{
		
	}
	
	public PalpiteVO(Jogo jogo, Palpite palpite)
	{
		//nunca estarao nulos
		this.dataDoJogo = jogo.getDiaEHorario();
		this.estadio = jogo.getEstadio().getNomeDoEstadio();
		this.idDoJogo=jogo.getNumeroDoJogo();
		
		//paises competidores do jogo ja foram definidos
		if(jogo.getPais1()!=null){
			this.selecao1 = jogo.getPais1().getNomeDoPais();
			this.selecao2 = jogo.getPais2().getNomeDoPais();
			this.codigoLongoPais1=jogo.getPais1().getCodigoLongo().toLowerCase();
			this.codigoLongoPais2=jogo.getPais2().getCodigoLongo().toLowerCase();			
		}
		else{
			this.selecao1 = jogo.getDescricaoPais1();
			this.selecao2 = jogo.getDescricaoPais2();	
			this.codigoLongoPais1="indefinido";
			this.codigoLongoPais2="indefinido";		
		}
		//resultado real do jogo ja foi inserido
		if(jogo.getGolsPais1()!=null){
			this.golsSelecao1 = jogo.getGolsPais1();
			this.golsSelecao2 = jogo.getGolsPais2();	
		}
		
		if(palpite!=null){
			this.idDoPalpite = palpite.getIdDoPalpite();
			this.palpite1 = palpite.getGolsPais1();
			this.palpite2 = palpite.getGolsPais2();
			this.pontos = palpite.getPontosGanhos();	
			this.idDoUsuario = palpite.getUsuario().getIdDoUsuario();
		}
		
	}
	
	public PalpiteVO(Integer idDoPalpite, Date dataDoJogo, String estadio,
			String selecao1, Integer palpite1, Integer golsSelecao1,
			String selecao2, Integer palpite2, Integer golsSelecao2, Integer pontos, String codigoLongoPais1, String codigoLongoPais2, Integer idDoJogo, Integer idDoUsuario) {

		this.idDoPalpite = idDoPalpite;
		this.dataDoJogo = dataDoJogo;
		this.estadio = estadio;
		this.selecao1 = selecao1;
		this.palpite1 = palpite1;
		this.golsSelecao1 = golsSelecao1;
		this.selecao2 = selecao2;
		this.palpite2 = palpite2;
		this.golsSelecao2 = golsSelecao2;
		this.pontos = pontos;
		this.codigoLongoPais1=codigoLongoPais1.toLowerCase();
		this.codigoLongoPais2=codigoLongoPais2.toLowerCase();
		this.idDoJogo=idDoJogo;
		this.idDoUsuario=idDoUsuario;

	}
	
	public boolean isJogoEditavel() {
		return jogoEditavel;
	}

	public void setJogoEditavel(boolean jogoEditavel) {
		this.jogoEditavel = jogoEditavel;
	}

	public Integer getIdDoUsuario() {
		return idDoUsuario;
	}

	public Integer getIdDoPalpite() {
		return idDoPalpite;
	}

	public Date getDataDoJogo() {
		return dataDoJogo;
	}

	public String getEstadio() {
		return estadio;
	}

	public String getSelecao1() {
		return selecao1;
	}

	public Integer getPalpite1() {
		return palpite1;
	}

	public String getSelecao2() {
		return selecao2;
	}

	public Integer getPalpite2() {
		return palpite2;
	}

	public Integer getPontos() {
		return pontos;
	}
	
	public Integer getIdDoJogo() {
		return idDoJogo;
	}
	
	public String getCodigoLongoPais1() {
		return codigoLongoPais1;
	}
	
	public String getCodigoLongoPais2() {
		return codigoLongoPais2;
	}

	public Integer getGolsSelecao1() {
		return golsSelecao1;
	}

	public Integer getGolsSelecao2() {
		return golsSelecao2;
	}

	@Override
	public int compareTo(PalpiteVO o) {
		return this.dataDoJogo.compareTo(o.getDataDoJogo());
	}
	
	
	


	
	
	
}
